Micron Document
Fox's Git Mirrors

Node / rns-mirrors / Reticulum-Go.git / files / .github / workflows / preview-release.yml

Displaying Raw • Download

.github/workflows/preview-release.yml 201d27032fbc0af2fd0a560de603cd8786ee75b5 (201d2703) Text, 2.61 KB

# Pinned first-party actions (bump tag and SHA together when upgrading):
# actions/checkout@v7.0.0 9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
#
name: Preview Release

on:
schedule:
- cron: "0 6 * * 0"
workflow_dispatch:

concurrency:
group: preview-release
cancel-in-progress: false

permissions:
contents: read

jobs:
metadata:
name: Prepare preview tag
runs-on: ubuntu-latest
outputs:
tag_name: ${{ steps.meta.outputs.tag_name }}
commit_sha: ${{ steps.meta.outputs.commit_sha }}
skip_release: ${{ steps.meta.outputs.skip_release }}
steps:
- name: Checkout
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
ref: master
fetch-depth: 0

- name: Compute preview tag
id: meta
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
EVENT_NAME: ${{ github.event_name }}
run: |
set -euo pipefail
short_sha="$(git rev-parse --short=7 HEAD)"
full_sha="$(git rev-parse HEAD)"
tag="preview-$(date -u +%Y.%m.%d)-${short_sha}"

skip_release=false
if [ "${EVENT_NAME}" = "schedule" ]; then
last_preview_tag="$(gh release list --limit 50 --json tagName,isPrerelease \\
--jq '[.[] | select(.isPrerelease) | select(.tagName | startswith("preview-"))][0].tagName // empty')"
last_preview_sha=""
if [ -n "${last_preview_tag}" ]; then
git fetch --tags --force origin
last_preview_sha="$(git rev-parse "refs/tags/${last_preview_tag}^{commit}" 2>/dev/null || true)"
fi
if [ -n "${last_preview_sha}" ] && [ "${last_preview_sha}" = "${full_sha}" ]; then
echo "No new commits on master since last preview (${last_preview_tag} @ ${last_preview_sha}); skipping scheduled release."
skip_release=true
fi
fi

echo "tag_name=${tag}" >> "$GITHUB_OUTPUT"
echo "commit_sha=${full_sha}" >> "$GITHUB_OUTPUT"
echo "skip_release=${skip_release}" >> "$GITHUB_OUTPUT"
echo "Preview tag: ${tag} @ ${full_sha} (skip_release=${skip_release})"

release:
name: Build and publish preview
needs: metadata
if: needs.metadata.outputs.skip_release != 'true'
permissions:
contents: write
uses: ./.github/workflows/release-assets.yml
with:
tag_name: ${{ needs.metadata.outputs.tag_name }}
prerelease: true
target_commitish: ${{ needs.metadata.outputs.commit_sha }}
secrets: inherit

Served by rngit 1.5.2 - Generated in 0.03s